package com.ruoyi.qd.service;

import java.util.List;
import com.mybatisflex.core.paginate.Page;
import com.ruoyi.common.core.page.PageDomain;
import com.mybatisflex.core.service.IService;
import com.ruoyi.qd.domain.RobotQueue;
import com.ruoyi.qd.vo.RobotQueueNowRes;
import com.ruoyi.qd.vo.RobotQueuePageReq;
import com.ruoyi.qd.vo.RobotQueuePageRes;

/**
 * 机器人队列Service接口
 * 
 * @author tushiguang
 * @date 2024-07-25
 */
public interface IRobotQueueService extends IService<RobotQueue> {
    /**
     * 根据机器人 sn 获取实时队列情况
     */
    RobotQueueNowRes listRobotQueueNow(String robotSn);

    /**
     * 批量删除机器人队列
     */
    void deleteRobotQueueByIds(Long[] ids);

    /**
     * 根据机器人 id 获取已经预约的时间段
     */
    List<String> listRobotAppointmentByRobotId(Long robotId);

    /**
     * 查询机器人队列
     * 
     * @param id 机器人队列主键
     * @return 机器人队列
     */
    RobotQueue selectRobotQueueById(Long id);

    /**
     * 分页查询机器人队列列表
     */
    Page<RobotQueuePageRes> selectRobotQueuePage(PageDomain pageDomain, RobotQueuePageReq robotQueuePageReq);

    /**
     * 查询机器人队列列表
     * 
     * @param robotQueue 机器人队列
     * @return 机器人队列集合
     */
    List<RobotQueue> selectRobotQueueList(RobotQueue robotQueue);

    /**
     * 新增机器人队列
     * 
     * @param robotQueue 机器人队列
     * @return 结果
     */
    int insertRobotQueue(RobotQueue robotQueue);

    /**
     * 修改机器人队列
     * 
     * @param robotQueue 机器人队列
     * @return 结果
     */
    int updateRobotQueue(RobotQueue robotQueue);

    /**
     * 删除机器人队列信息
     * 
     * @param id 机器人队列主键
     * @return 结果
     */
    int deleteRobotQueueById(Long id);
}
